package com.jackstraw.jack_base.rules.service;

import com.jackstraw.jack_base.datasource.mybatis.base.service.MyBatisService;
import com.jackstraw.jack_base.rules.dao.database.SceneActuatorDao;
import com.jackstraw.jack_base.rules.entity.bo.SceneActuatorBo;
import com.jackstraw.jack_base.rules.entity.po.SceneActuatorKeyPo;
import com.jackstraw.jack_base.rules.entity.po.SceneActuatorPo;
import com.jackstraw.jack_base.rules.entity.po.SceneActuatorPoExample;

import java.util.List;

/**
 * 场景信息执行器表  service接口
 *
 * @author zhaozhao 945514650@qq.com
 * @since version:1.0 generatorDate:2022-12-04 14:28:29
 */
public interface SceneActuatorService
        extends MyBatisService<SceneActuatorDao, SceneActuatorPo, SceneActuatorBo, SceneActuatorKeyPo<SceneActuatorPo>, SceneActuatorPoExample> {

    /**
     * 通过场景名称查询对应的场景信息
     * 如果查询不到或场景以失效，则抛出对应异常
     *
     * @param sceneName 场景名称
     * @return
     */
    SceneActuatorBo queryOne(String sceneName);

    /**
     * 通过场景名称查询对应的场景信息
     * 包含场景信息执行文本
     * 如果查询不到或场景以失效，则抛出对应异常
     *
     * @param sceneName 场景名称
     * @return
     */
    SceneActuatorBo queryOneWithBlob(String sceneName);

    /**
     * 通过场景名称查询对应的场景信息
     * 包含场景信息执行文本与场景和规则组的关联关系
     * 如果查询不到或场景以失效，则抛出对应异常
     *
     * @param sceneName 场景名称
     * @return
     */
    SceneActuatorBo queryOneAll(String sceneName);

    /**
     * 查询场景的最新版本
     * <p>
     * -1 数据不存在
     * -2 规则组失效
     *
     * @param sceneName 场景名称
     * @return
     */
    Integer querySceneVersion(String sceneName);


    /**
     * 查询全量的有效的场景代码
     *
     * @return
     */
    List<SceneActuatorBo> queryAllRules();

}